28
תגובות

בעיה בקוקיז

פתח ArielTador ,
שלום,

בניתי מערכת הרשמה, ויש בעיה קטנה בהתחברות,
אני שמתי שמתי שהמשתמש מתחבר יהיה קוקיז, אבל הקוקיז עושה לי בעיה,

זה הקוד של המערכת כולה:

if($do == login)
{
print'
<form method="post" action="?do=loginc">
<table>
<tr>
<td><input type="text" name="userl" /></td>
<td>שם משתמש</td>
</tr>
<tr>
<td><input type="text" name="passl" /></td>
<td>סיסמה</td>
</tr>
<tr>
<td><input type="reset" name="resetl" /></td>
<td><input type="submit" name="subl" /></td>
</tr>
</table>
</form>
'
;
if(isset($_COOKIE['log'])) {
print'אתה מחובר';
}else{
print'אתה לא מחובר<br>';
print'<a href="?do=logut">התנתק</a>';
}
}else{
if($do == loginc)
{
$usr = $_POST['userl']; $pss = $_POST['passl']; $time = time();
$login = mysql_query("SELECT * FROM `Users` where `Username`='$usr' AND `Password`='$pss'");
$loginr = mysql_num_rows($login);
if(isset($_POST['subl']))
{
if($loginr > 0)
{
$pass = md5(md5($usr));
setcookie("log",'true', time() + 86400*100);
echo 'התחברת בהצלחה';
}
}
}else{
if($do == logut)
{
setcookie("log",'$pass', time() - 86400*100);
print'התנתקת בהצלחה';
}


אך הקוד הזה (של ההתחברות):

setcookie("log",'true', time() + 86400*100);


והקוד הזה (של ההתנתקות):

setcookie("log",'$pass', time() - 86400*100);


עושים לי בעיה כזו באתר:

Warning: Cannot modify header information - headers already sent by (output started at /home/dgale/domains/psd-galery.net/public_html/register/index.php:15) in /home/dgale/domains/psd-galery.net/public_html/register/index.php on line 164


אז מי שיכול לעזור, שיעזור בבקשה :)

28 תשובות

avatar ענה iiddaannyy ב 03 ליולי 2012 #

עוגיות נשלחות בין ה-headerים, ולא כתוכן לדפדפן.
מה שאני רוצה להגיד זה ששמת פלט לפני setcookie וזה אסור.
את כל הפלט שים בסוף.

avatar ענה ArielTador ב 03 ליולי 2012 #

אתה יכול בבקשה לתת לי דוגמא לזה, בכך שתעשה זאת במערכת שלי?

avatar ענה iiddaannyy ב 03 ליולי 2012 #

כל מה שב-print לא צריך להיות שם. הכל צריך להיות בסוף הדף.

avatar ענה ArielTador ב 03 ליולי 2012 #

מזאת אומרת בסוף הדף?, איפה אני יכול לשים אותו בשביל שמתי שהמשתמש יתחבר זה יופיע?

avatar ענה iiddaannyy ב 03 ליולי 2012 #

$output = '';
if($do == 'login') {
  $output .= '
  <form method="post" action="?do=loginc">
  <table>
  <tr>
  <td><input type="text" name="userl" /></td>
  <td>שם משתמש</td>
  </tr>
  <tr>
  <td><input type="text" name="passl" /></td>
  <td>סיסמה</td>
  </tr>
  <tr>
  <td><input type="reset" name="resetl" /></td>
  <td><input type="submit" name="subl" /></td>
  </tr>
  </table>
  </form>
  '
;
  if (isset($_COOKIE['log'])) {
    $output .= 'אתה מחובר';
  }
  else {
    $output .= 'אתה לא מחובר<br>';
    $output .= '<a href="?do=logut">התנתק</a>';
  }
}
else {
  if($do == 'loginc') {
    $usr = $_POST['userl']; $pss = $_POST['passl']; $time = time();
    $login = mysql_query("SELECT * FROM `Users` where `Username`='$usr' AND `Password`='$pss'");
    $loginr = mysql_num_rows($login);
    if(isset($_POST['subl'])) {
      if($loginr > 0) {
        $pass = md5(md5($usr));
        setcookie("log",'true', time() + 86400*100);
        $output .= 'התחברת בהצלחה';
      }
    }
  }
  else{
    if($do == 'logut')
    {
      setcookie("log",'$pass', time() - 86400*100);
      $output .= 'התנתקת בהצלחה';
    }
  }
}
echo $output;

avatar ענה iiddaannyy ב 03 ליולי 2012 #

ד"א, תלמד על mvc, הקוד הזה ממש רע וגם יש לך פריצת אבטחה.

avatar ענה ArielTador ב 03 ליולי 2012 #

אחיי? עדיין יוצא לי:

Warning: Cannot modify header information - headers already sent by (output started at /home/dgale/domains/psd-galery.net/public_html/register/index.php:9) in /home/dgale/domains/psd-galery.net/public_html/register/index.php on line 164


אפשר עוד תמיכה?!

avatar ענה iiddaannyy ב 03 ליולי 2012 #

כי יש לך לפני זה עוד הדפסות.
תראה מה שעשיתי ותיישם את זה בכל שאר המקומות.

avatar ענה ArielTador ב 03 ליולי 2012 #

אבל אין לי עוד קוקיז בדף, ד"א, יש לך סקייפ אני יראה לך הכל במפורט?

avatar ענה iiddaannyy ב 03 ליולי 2012 #

אז מה, יש לך עוד פלט לפני setcookie.

ואין לי סקייפ, מצטער.


תיישם את מה שעשיתי בקוד שלך בשאר הקוד.

avatar ענה ArielTador ב 03 ליולי 2012 #

נעשה שכל פלט יהיה ב HEADER? זה לא קצת מוגזם?, כאילו, בכל זאת אחרי זה יהיה עוד פלטים, כי אם אני ישים את זה למעלה, אני יצטרך לשים לזה Echoים עם פלט, נגיד שמתי את זה:

$my = 'שלום';


אחרי זה אני יצטרך לשים את זה בתוך התוכן שלמטה בתור:

echo $my;


אז זה גם נקרא פלט לא?
אז מה עושים?

avatar ענה iiddaannyy ב 03 ליולי 2012 #

את המשתנה output שיצרתי תשים הכי למעלה. וכל פעם שאתה רוצה להדפיס משהו אז פשוט תשרשר אותו למשתנה, וב************סוף************ הקוד תדפיס את ה-output.

ותעבור ל-mvc.

avatar ענה ArielTador ב 03 ליולי 2012 #

מזה "************" ???

avatar ענה iiddaannyy ב 03 ליולי 2012 #

מדגיש את המילה "סוף".

avatar ענה ArielTador ב 03 ליולי 2012 #

שים לב, זה כל המערכת שבניתי מתחילת הדף עד הסוף:

http://phpguide.co.il/phplive?code=433

שמתי בכולם את מה שאמרת, וכלום לא עובד לי!!
כלום!!!

תבדוק את כל זה, ותגיד לי בבקשה מה הבעיה.

avatar ענה iiddaannyy ב 03 ליולי 2012 #

מה שמחוץ לתגי php הוא גם פלט. **כל** הפלט -> לסוף.

avatar ענה ArielTador ב 03 ליולי 2012 #

אוקיי, עכשיו זה לא מציג לי את הבעיה, אבל בכל זאת יש בעיה אחרת: זה הקוד שלי:

http://phpguide.co.il/phplive?code=434

אבל הבעיה פה, היא בדף ה ?do=login איפה שאמור להיות כתוב "אתה מחובר" או "אתה מנותק", זה משאיר לי אותו כל הזמן על מחובר, אפילו אם אני נכנס ל ?do=logut .
למה?

avatar ענה iiddaannyy ב 03 ליולי 2012 #

הקוד שלך הוא לא נכון.
אתה עושה דבר כזה:

if ($do == register) {

}

register אמור להיות מחרוזת, תעטוף אותו בגירשיים.
כשאתה כותב את זה ככה php מחפשת קבוע (constant) בשם register.

avatar ענה ArielTador ב 03 ליולי 2012 #

ואם אני יעשה את זה, מה שאמרתי יפעל?

avatar ענה iiddaannyy ב 03 ליולי 2012 #

הקוד שלך ממש קוד מסורבל, תחפש טעויות כמו שהזכרתי ותתקן אותן. זה קודם לכל.

avatar ענה ArielTador ב 03 ליולי 2012 #

סידרתי את הקוד כמו שאמרת:

http://phpguide.co.il/phplive?code=435

אבל עדיין כתוב לי "אתה מחובר" כל הזמן!!
מה עושים?

avatar ענה iiddaannyy ב 03 ליולי 2012 #

אתה חייב ללמוד איך לכתוב קוד. הכל אצלך ממש לא מובן.
הנה הקוד ה"חדש": http://pastebin.com/DPwZGq96
לא תיקנתי כלום כי קשה להבין משהו מהקוד, אבל אולי ככה יהיה לך יותר קל למצוא את הבעיה ולא תזדקק לעזרה.

avatar ענה ArielTador ב 03 ליולי 2012 #

אתה יכול בבקשה להכניס את הקוד לאתר אחר? או להביא לי אותו בתור קובץ להורדה? כי פשוט אתרים שמכניסים בהם קודים לא עובדים לי :S

avatar ענה ArielTador ב 03 ליולי 2012 #

אבל זה לא עובד לי!, תעלה קובץ PHP ל F2H, ותביא לי אותו.

תודה!

avatar ענה iiddaannyy ב 03 ליולי 2012 #

הקישור ששלחתי עכשיו הוא הקובץ להורדה, מה לא עובד בדיוק?

avatar ענה ArielTador ב 03 ליולי 2012 #

האתר הזה בכלל לא עובד לי..
תוכל להעלות לאתר אחר?

avatar ענה iiddaannyy ב 03 ליולי 2012 #

http://www.upf.co.il/file/410101355.html